home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / demos / 32 / tutor.cmd < prev   
Encoding:
Text File  |  1986-07-17  |  29.3 KB  |  1,323 lines

  1. SET TALK OFF
  2. SET ESCAPE OFF
  3. SET PROCEDURE TO TUTOR.CMD
  4. *************************
  5. * GLOBAL VARIABLES
  6. STORE 'SET SAY VIDEO TO 112' TO SAYNORMAL
  7. STORE 'SET SAY VIDEO TO 7' TO SAYREVERSE
  8. STORE 'SET SAY VIDEO TO 15' TO SAYBRIGHT
  9. STORE 'SET SAY VIDEO TO 143' TO SAYBLINK
  10. STORE 'SET ERASE VIDEO TO 112' TO SAYERASE
  11. STORE 'SET GET VIDEO TO 112' TO GETREVERSE
  12. STORE 'SET GET VIDEO TO 7' TO GETNORMAL
  13. STORE CENTER('^U = PgUp  ^D = PgDn   HOME = Main Menu  Esc = Quit',76) TO HELPLINE
  14. STORE 'ASSIGN BOX(05,05,19,74,42,42,42,42,42,42)' TO BIG_BOX
  15. STORE ' ' TO X.ANS
  16. ********
  17. USE MAIL
  18. SET SAFETY OFF
  19. *******
  20. *&GETNORMAL
  21. *&SAYERASE
  22. &SAYREVERSE
  23. ERASE
  24. TEXT
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.                         Welcome to the dBMAN Tutorial !
  32.  
  33.        This tutorial is designed to teach you all the commands needed to 
  34.        create  and use your own data base.  If you leave  this tutorial, 
  35.        you  may  at  any time type DO TUTOR, and  re-run  this  program.
  36.          
  37.        dBMAN  is easy to use. In just a few short minutes this  tutorial 
  38.        will show you how to CREATE, USE, APPEND, DISPLAY, LOCATE,  EDIT, 
  39.        DELETE, SORT, and INDEX your new data base.  
  40. ENDTEXT
  41. &BIG_BOX
  42. &SAYNORMAL
  43. @ 24,01 SAY CENTER('Please press any key to continue.',78)
  44. WAIT
  45. DO WHILE T
  46.     IF LASTKEY() = 27
  47.         CLEAR
  48.         RETURN
  49.     ENDIF
  50.     &SAYREVERSE
  51.     ERASE
  52.     ASSIGN VMENU('*','GETTING STARTED*CREATE A MAIL LIST*USING A MAIL LIST*ADDING RECORDS*DISPLAYING RECORDS*LOCATING RECORDS*EDITING RECORDS*SORTING RECORDS*INDEXING RECORDS*QUIT',5,1)
  53.     DO CASE
  54.         CASE VMENU() = 1 | GETTING STARTED
  55.             ERASE
  56.             DO TUTORGS0
  57.         CASE VMENU() = 2 | CREATE
  58.             ERASE
  59.             DO TUTORCR0
  60.         CASE VMENU() = 3 | USE
  61.             ERASE
  62.             DO TUTORUS0
  63.         CASE VMENU() = 4 | ADD
  64.             ERASE
  65.             DO TUTORAD0
  66.         CASE VMENU() = 5 | DISPLAY
  67.             ERASE
  68.             DO TUTORDS0
  69.         CASE VMENU() = 6 | LOCATE
  70.             ERASE
  71.             DO TUTORLO0
  72.         CASE VMENU() = 7 | EDIT
  73.             ERASE
  74.             DO TUTORED0
  75.         CASE VMENU() = 8 | SORT
  76.             ERASE
  77.             DO TUTORSO0
  78.         CASE VMENU() = 9 | INDEXING
  79.             ERASE
  80.             DO TUTORID0
  81.         CASE NRANGE(VMENU(),40,49) | HELP
  82.             ERASE
  83.             DO TUTORHLP
  84.         OTHERWISE
  85.                         CLEAR
  86.             RETURN
  87.     ENDCASE
  88. ENDDO
  89. RETURN
  90. ***************
  91. PROCEDURE TUTORHLP
  92. ***************
  93. @ 10,00 ESAY ' '
  94. TEXT
  95.                          Welcome to the dBMAN Tutorial.
  96.  
  97.         To select a menu item, simply use the arrow key to highlight  the 
  98.         command you would like to see, then press the return key.
  99.  
  100.         Each section will discuss the different dBMAN commands  necessary 
  101.         for you to create and use your own data base.  Some sections will 
  102.         even let you enter your own data!  
  103. ENDTEXT
  104. ASSIGN BOX(09,05,19,74,42,42,42,42,42,42)
  105. & SAYNORMAL
  106. @ 24,02 SAY CENTER('PRESS ANY KEY TO CONTUNUE',76)
  107. WAIT
  108. &SAYREVERSE
  109. RETURN
  110. ************
  111. PROCEDURE TUTORGS0
  112. ************
  113. * TUTORGS0.PRG
  114. DO WHILE T
  115. DO NORMSCR
  116. TEXT
  117.  
  118.  
  119.  
  120.  
  121.                                 THE dBMAN SCREEN
  122.  
  123.         The  dBMAN screen is divided into two sections, with the  command 
  124.         window at the top and the data window below.  These two  sections 
  125.         will  allow  you  to  see  dBMAN  prompts  and  messages  without 
  126.         disrupting your data display.
  127.  
  128.         The  command  field is where you enter  commands  for  execution.  
  129.         dBMAN  places the cursor  at the "CMD:" caption when it is  ready 
  130.         to receive a command.  
  131.  
  132. ENDTEXT
  133. ASSIGN BOX(08,05,19,74,42,42,42,42,42,42)
  134. &SAYNORMAL
  135. @24,02 SAY HELPLINE
  136. &SAYREVERSE
  137. WAIT
  138. DO LKEY
  139. DO CASE
  140.     CASE Y.LKEY = 'N'
  141.         DO TUTORGS1
  142.     CASE Y.LKEY = 'P'
  143.         *CLOSE ALL
  144.         RETURN TO MAIN
  145. ENDCASE
  146. ENDDO
  147. RETURN
  148. ************
  149. PROCEDURE TUTORGS1
  150. **********
  151. DO WHILE T
  152. @ 05,00 ERASE
  153. DO NORMSCR
  154. TEXT
  155.  
  156.  
  157.  
  158.                                 THE dBMAN SCREEN
  159.  
  160.         The message field is where you will receive messages from  dBMAN.  
  161.         The message is posted after the "MSG:" caption; if the message is 
  162.         reporting   an  error,  a  beep  will  sound.   The  message   is 
  163.         automatically erased when you press any key.
  164.  
  165.         The  file ID field displays the name and file ID of  the  current 
  166.         data  file.   dBMAN will display FP (Primary) when  it  is  first 
  167.         started.   The  current record field displays the  record  number 
  168.         that was last accessed by dBMAN.
  169.  
  170. ENDTEXT
  171. ASSIGN BOX(07,05,19,74,42,42,42,42,42,42)
  172. &SAYNORMAL
  173. @ 24,02 SAY HELPLINE
  174. &SAYREVERSE
  175. WAIT
  176. DO LKEY
  177. DO CASE
  178.     CASE Y.LKEY = 'N'
  179.                DO TUTORGS2
  180.     CASE Y.LKEY = 'P'
  181.                 @ 05,00 ERASE
  182.         EXIT
  183. ENDCASE
  184. ENDDO
  185. RETURN
  186. ************
  187. PROCEDURE TUTORGS2
  188. ************
  189. DO WHILE T
  190. @ 05,00 ERASE
  191. DO NORMSCR
  192. TEXT
  193.  
  194.  
  195.  
  196.  
  197.                                 THE dBMAN SCREEN
  198.  
  199.         The  key summary field is a second message field that displays  a 
  200.         reminder of which control keys apply to the current command. 
  201.  
  202.         F7 will display all the memory variables in use.  F8 will display 
  203.         dBMAN  "switches"  and the data files in use.  F9  will  give  an 
  204.         extended explanation of an error message.  F10 will provide  HELP 
  205.         based on the command in the command line.
  206.  
  207. ENDTEXT
  208. ASSIGN BOX(08,05,19,74,42,42,42,42,42,42)
  209. &SAYNORMAL
  210. @24,02 SAY HELPLINE
  211. &SAYREVERSE
  212. WAIT
  213. DO LKEY
  214. DO CASE
  215.     CASE Y.LKEY = 'N'
  216.         DO TUTORCR0
  217.     CASE Y.LKEY = 'P'
  218.         *CLOSE ALL
  219.         EXIT
  220. ENDCASE
  221. ENDDO
  222. RETURN
  223. ************
  224. PROCEDURE TUTORCR0
  225. ************
  226. * CREATE
  227. DO WHILE T
  228. @ 05,00 ERASE 
  229. DO NORMSCR
  230. TEXT
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.                              Create Mailing List
  239.  
  240.        The  first  thing you will need to do is to create a  data  base.  
  241.        The  command  you will use is CREATE  <filename.DBF>.   You  will 
  242.        insert your own file name instead of the <>'s.  (Please refer  to 
  243.        your  DOS  manual if you are not sure of what a  proper  filename 
  244.        should be.)  If you do not specify an extension, dBMAN will use  a 
  245.        ".DBF" extension.
  246.  
  247.        Here we will use the name MAIL.
  248. ENDTEXT
  249. ASSIGN BOX(11,05,22,74,42,42,42,42,42,42)
  250. DO NORMSCR
  251. &SAYNORMAL
  252. @ 24,01 SAY HELPLINE
  253. &SAYREVERSE
  254. WAIT
  255. DO LKEY
  256. DO CASE
  257.     CASE Y.LKEY = 'N'
  258.         DO TUTORCR1
  259.     CASE Y.LKEY = 'P'
  260.         EXIT
  261. ENDCASE
  262. ENDDO
  263. RETURN
  264. ************
  265. PROCEDURE TUTORCR1
  266. ************
  267. * CREATE
  268. DO WHILE T
  269. @ 06,00 ERASE 
  270. DO NORMSCR
  271. @ 17,00 SAY CENTER('Create Mailing List',79)
  272. TEXT
  273.  
  274.        Here  we will define the data base structure.  We'll  tell  dBMAN 
  275.        the  name of each field and the type of data we will store in  it 
  276.        (Character, Number, Date, Logical), how many places to reserve in 
  277.        the  record  for the data, and if it is a number type,  how  many 
  278.        decimal places we will need.
  279. ENDTEXT
  280. ASSIGN BOX (16,05,23,74,42,42,42,42,42,42)
  281. X.STRING = 'CREATE MAIL          '
  282. X.STRROW = 0
  283. X.STRCOL = 4
  284. X.STRTIME = 5
  285. DO PRINTTXT
  286. @ 03,04 SAY 'Enter structure'
  287. @ 03,40 SAY RTJUST('FP MAIL.DBF        Rec BOF     ',40)
  288. &SAYNORMAL
  289. @ 04,00 SAY '^S=save ^Q=quit ^E=era ^I=ins'
  290. &SAYREVERSE
  291. @ 05,06 SAY 'fieldname    type        width   decimal'
  292. @ 06,51 SAY 'Bytes remaining :'
  293. @ 07,51 SAY 'No. of fields :'
  294. ******
  295. @ 06,70 SAY '4000'
  296. @ 07,73 SAY '1'
  297. ******
  298. *FIRSTNAME
  299. *******
  300. @ 06,03 SAY '1'
  301. &SAYNORMAL
  302. @ 06,06 SAY SPACE(10)
  303. @ ROW(),22 SAY ' '
  304. @ ROW(),32 SAY '    '
  305. @ ROW(),42 SAY '  '
  306. X.STRING = 'FIRST_NAME'
  307. X.STRROW = 6
  308. X.STRCOL = 6
  309. X.STRTIME = 5
  310. DO PRINTTXT
  311. X.STRING = 'C'
  312. X.STRROW = 6
  313. X.STRCOL = 22
  314. X.STRTIME = 5
  315. DO PRINTTXT
  316. X.STRING = '  10'
  317. X.STRROW = 6
  318. X.STRCOL = 32
  319. X.STRTIME = 5
  320. DO PRINTTXT
  321. &SAYREVERSE
  322. ******
  323. * LAST NAME
  324. ******
  325. @ 06,70 SAY '3990'
  326. @ 07,73 SAY '2'
  327. ******
  328. @ 07,03 SAY '2'
  329. &SAYNORMAL
  330. @ 07,06 SAY SPACE(10)
  331. @ ROW(),22 SAY ' '
  332. @ ROW(),32 SAY '    '
  333. @ ROW(),42 SAY '  '
  334. X.STRING = 'LAST_NAME '
  335. X.STRROW = 7
  336. X.STRCOL = 6
  337. X.STRTIME = 5
  338. DO PRINTTXT
  339. X.STRING = 'C'
  340. X.STRROW = 7
  341. X.STRCOL = 22
  342. X.STRTIME = 5
  343. DO PRINTTXT
  344. X.STRING = '  20'
  345. X.STRROW = 7
  346. X.STRCOL = 32
  347. X.STRTIME = 5
  348. DO PRINTTXT
  349. &SAYREVERSE
  350. ******
  351. * ADDRESS
  352. ******
  353. @ 06,70 SAY '3970'
  354. @ 07,73 SAY '3'
  355. ******
  356. @ 08,03 SAY '3'
  357. &SAYNORMAL
  358. @ 08,06 SAY SPACE(10)
  359. @ ROW(),22 SAY ' '
  360. @ ROW(),32 SAY '    '
  361. @ ROW(),42 SAY '  '
  362. X.STRING = 'ADDRESS'
  363. X.STRROW = 8
  364. X.STRCOL = 6
  365. X.STRTIME = 5
  366. DO PRINTTXT
  367. X.STRING = 'C'
  368. X.STRROW = 8
  369. X.STRCOL = 22
  370. X.STRTIME = 5
  371. DO PRINTTXT
  372. X.STRING = '  60'
  373. X.STRROW = 8
  374. X.STRCOL = 32
  375. X.STRTIME = 5
  376. DO PRINTTXT
  377. &SAYREVERSE
  378. ******
  379. *CITY
  380. *******
  381. @ 06,70 SAY '3910'
  382. @ 07,73 SAY '4'
  383. ******
  384. @ 09,03 SAY '4'
  385. &SAYNORMAL
  386. @ 09,06 SAY SPACE(10)
  387. @ ROW(),22 SAY ' '
  388. @ ROW(),32 SAY '    '
  389. @ ROW(),42 SAY '  '
  390. X.STRING = 'CITY'
  391. X.STRROW = 9
  392. X.STRCOL = 6
  393. X.STRTIME = 5
  394. DO PRINTTXT
  395. X.STRING = 'C'
  396. X.STRROW = 9
  397. X.STRCOL = 22
  398. X.STRTIME = 5
  399. DO PRINTTXT
  400. X.STRING = '  15'
  401. X.STRROW = 9
  402. X.STRCOL = 32
  403. X.STRTIME = 5
  404. DO PRINTTXT
  405. &SAYREVERSE
  406. ******
  407. * STATE
  408. ******
  409. @ 06,70 SAY '3895'
  410. @ 07,73 SAY '5'
  411. ******
  412. @ 10,03 SAY '5'
  413. &SAYNORMAL
  414. @ 10,06 SAY SPACE(10)
  415. @ ROW(),22 SAY ' '
  416. @ ROW(),32 SAY '    '
  417. @ ROW(),42 SAY '  '
  418. X.STRING = 'STATE'
  419. X.STRROW = 10
  420. X.STRCOL = 6
  421. X.STRTIME = 5
  422. DO PRINTTXT
  423. X.STRING = 'C'
  424. X.STRROW = 10
  425. X.STRCOL = 22
  426. X.STRTIME = 5
  427. DO PRINTTXT
  428. X.STRING = '   2'
  429. X.STRROW = 10
  430. X.STRCOL = 32
  431. X.STRTIME = 5
  432. DO PRINTTXT
  433. &SAYREVERSE
  434. ******
  435. * ZIP
  436. ******
  437. @ 06,70 SAY '3893'
  438. @ 07,73 SAY '6'
  439. ******
  440. @ 11,03 SAY '6'
  441. &SAYNORMAL
  442. @ 11,06 SAY SPACE(10)
  443. @ ROW(),22 SAY ' '
  444. @ ROW(),32 SAY '    '
  445. @ ROW(),42 SAY '  '
  446. X.STRING = 'ZIP'
  447. X.STRROW = 11
  448. X.STRCOL = 6
  449. X.STRTIME = 5
  450. DO PRINTTXT
  451. X.STRING = 'C'
  452. X.STRROW = 11
  453. X.STRCOL = 22
  454. X.STRTIME = 5
  455. DO PRINTTXT
  456. X.STRING = '   5'
  457. X.STRROW = 11
  458. X.STRCOL = 32
  459. X.STRTIME = 5
  460. DO PRINTTXT
  461. &SAYREVERSE
  462. ******
  463. *PHONE
  464. ******
  465. @ 06,70 SAY '3888'
  466. @ 07,73 SAY '7'
  467. ******
  468. @ 12,03 SAY '7'
  469. &SAYNORMAL
  470. @ 12,06 SAY SPACE(10)
  471. @ ROW(),22 SAY ' '
  472. @ ROW(),32 SAY '    '
  473. @ ROW(),42 SAY '  '
  474. X.STRING = 'PHONE'
  475. X.STRROW = 12
  476. X.STRCOL = 6
  477. X.STRTIME = 5
  478. DO PRINTTXT
  479. X.STRING = 'C'
  480. X.STRROW = 12
  481. X.STRCOL = 22
  482. X.STRTIME = 5
  483. DO PRINTTXT
  484. X.STRING = '  12'
  485. X.STRROW = 12
  486. X.STRCOL = 32
  487. X.STRTIME = 5
  488. DO PRINTTXT
  489. &SAYREVERSE
  490. *********
  491. * LAST
  492. *********
  493. @ 06,70 SAY '3876'
  494. @ 03,04 SAY 'Done                   '
  495. @ 00,04 ESAY ' '
  496. ******
  497.  
  498. &SAYNORMAL
  499. @ 24,01 SAY HELPLINE
  500. &SAYREVERSE
  501. WAIT
  502. DO LKEY
  503. DO CASE
  504.     CASE Y.LKEY = 'N'
  505.         DO TUTORCR2
  506.     CASE Y.LKEY = 'P'
  507.         &SAYREVERSE
  508.         @ 00,00 ESAY 'CMD:'
  509.         EXIT
  510. ENDCASE
  511. ENDDO
  512. RETURN
  513. ************
  514. PROCEDURE TUTORCR2
  515. ************
  516. * CREATE
  517. DO WHILE T
  518. @ 14,00 ERASE
  519. @ 17,00 SAY CENTER('Create Mailing List',80)
  520. TEXT
  521.  
  522.        NOTE:   Although the phone and zip fields contain  numbers, we'll 
  523.        use the "C" (Character) type.  This will allow us to have leading 
  524.        zero's and use the "-" character.  
  525. ENDTEXT
  526. ASSIGN BOX(16,05,23,74,42,42,42,42,42,42)
  527. &SAYNORMAL
  528. @ 24,01 SAY HELPLINE
  529. &SAYREVERSE
  530. WAIT
  531. DO LKEY
  532. DO CASE
  533.     CASE Y.LKEY = 'N'
  534.         DO TUTORCR3
  535.     CASE Y.LKEY = 'P'
  536.         @ 00,00 ESAY 'CMD:'
  537.         EXIT
  538. ENDCASE
  539. ENDDO
  540. RETURN
  541. ************
  542. PROCEDURE TUTORCR3
  543. ************
  544. * CREATE
  545. DO WHILE T
  546. @ 14,00 ERASE
  547. @ 17,00 SAY CENTER('Create Mailing List',80)
  548. TEXT
  549.        You will want to set up your data base structure to allow you  to 
  550.        store any data you might want to find later.  Don't worry though, 
  551.        if you don't get it right the first time you can always come back 
  552.        and  add, delete , insert , and rename the fields.  This  can  be 
  553.        done by using the commands MODIFY STRUCTURE and MODIFY FIELDNAME.
  554. ENDTEXT
  555. ASSIGN BOX(16,05,23,74,42,42,42,42,42,42)
  556. &SAYNORMAL
  557. @ 24,01 SAY HELPLINE
  558. &SAYREVERSE
  559. WAIT
  560. DO LKEY
  561. DO CASE
  562.     CASE Y.LKEY = 'N'
  563.      ERASE
  564.         DO TUTORUS0
  565.     CASE Y.LKEY = 'P'
  566.         EXIT
  567. ENDCASE
  568. ENDDO
  569. RETURN
  570. ************
  571. PROCEDURE TUTORUS0
  572. ************
  573. DO WHILE T
  574. DO NORMSCR
  575. @ 05,00 ERASE
  576. @ 08,00 SAY CENTER('Use Mailing List',80)
  577. TEXT
  578.        Once  you  have  created  a  data base,  you  will  want  to  put 
  579.        information into it.  But first you will need to USE a data base.  
  580.        The  command  is quite easy.  Just type:  USE  <filename>,  where 
  581.        filename  is the name of your data base.  We'll use the  MAIL.DBF 
  582.        again.
  583.  
  584.        When  a file is in use, dBMAN will display the selected  area  ID 
  585.        (FP is the default) and the name of the file.  You can have  only 
  586.        one  file open in each area.  If you have more than one  file  in 
  587.        use  and would like to see the file names, you can press  the  F8 
  588.        key.  Try it!
  589. ENDTEXT
  590. ASSIGN BOX(07,05,20,74,42,42,42,42,42,42)
  591. X.STRING = 'USE MAIL'
  592. X.STRROW = 0
  593. X.STRCOL = 4
  594. X.STRTIME = 5
  595. &SAYREVERSE
  596. DO PRINTTXT
  597. @ 00,04 ESAY ' '
  598. @ 03,04 SAY 'DONE' 
  599. @ 03,49 SAY 'FP  MAIL.DBF'
  600. @ 03,69 SAY 'Rec 1'
  601.  
  602. &SAYNORMAL
  603. @ 24,01 SAY HELPLINE
  604. &SAYREVERSE
  605. WAIT
  606. IF LASTKEY() = 194
  607.     @ 05,00 ERASE
  608.     @ 05,00 SAY ''
  609.     TEXT
  610. APPROX=OFF  CONFIRM=OFF  CONSOLE=ON  DELETED=OFF  ENCRYPT=OFF  ESCAPE=ON
  611. EXACT=OFF  SAFETY=ON  TALK=ON  UNIQUE=OFF
  612. ERRCODE=0  DATE FORMAT=0  USERSTAT=255  GETNO=0
  613. VER=2.00A   INTXX=14H  OPEN MODE=42H
  614. BREAK=OFF//1  DEFAULT(DBF/NDX/TXT/MEM/PRG/Sys/DXX) (//////)
  615. LINE COUNT=60  MARGIN(Top/Bottom/Left) (3/3/0)
  616. PRINT(OFF/1)  TRAP(OFF/)  LOGFILE()
  617. VIDEO(Say/Get/Erase) (7/112/7)
  618.  
  619.  
  620. DBF FILE <fid>,<file>,<currec>,<totalrec>
  621. P,MAIL.DBF,1,1
  622.  
  623.     ENDTEXT
  624.     WAIT 'PgDn to continue. '
  625.     LOOP
  626.     ENDIF
  627. DO LKEY
  628. DO CASE
  629.     CASE Y.LKEY = 'N'
  630.         DO TUTORAD0
  631.     CASE Y.LKEY = 'P'
  632.         &SAYREVERSE
  633.         ERASE
  634.         @ 00,00 SAY ''
  635.         TEXT
  636. CMD:
  637.  
  638.  
  639. MSG:Done                                              FP MAIL.DBF        Rec BOF
  640. ^S=save ^Q=quit ^E=era ^I=ins                       F7=Mem F8=Sta F9=Err F10=Cmd
  641.       fieldname    type        width   decimal
  642.    1  FIRST_NAME      C           10               Bytes remaining :  3876
  643.    2  LAST_NAME       C           20               No. of fields :       7
  644.    3  ADDRESS         C           60
  645.    4  CITY            C           15
  646.    5  STATE           C            2
  647.    6  ZIP             C            5
  648.    7  PHONE           C           12
  649.  
  650.  
  651.  
  652.      **********************************************************************
  653.      *                         Create Mailing List                        *
  654.      * You will want to set up your data base structure to allow you  to  *
  655.      * store any data you might want to find later.  Don't worry though,  *
  656.      * if you don't get it right the first time you can always come back  *
  657.      * and  add, delete , insert , and rename the fields.  This  can  be  *
  658.      * done by using the commands MODIFY STRUCTURE and MODIFY FIELDNAME.  *
  659.      **********************************************************************
  660.         ENDTEXT
  661.         &SAYNORMAL
  662.         @ 04,00 SAY '^S=save ^Q=quit ^E=era ^I=ins                       F7=Mem F8=Sta F9=Err F10=Cmd'
  663.         &SAYREVERSE
  664.         EXIT 
  665. ENDCASE
  666. ENDDO
  667. RETURN
  668. ************
  669. PROCEDURE TUTORAD0
  670. ************
  671. DO WHILE T
  672. @ 05,00 ERASE
  673. DO NORMSCR
  674. &SAYREVERSE
  675. @ 03,52 SAY 'MAIL.DBF'
  676. @ 03,73 SAY '1'
  677. @ 14,00 SAY CENTER('Adding Records',80)
  678. TEXT
  679.  
  680.         To  add  records  to your data base, you  will  use  the  command 
  681.         APPEND.  APPEND will add new records to the bottom of your file.
  682.  
  683. ENDTEXT
  684. ASSIGN BOX(13,05,23,74,42,42,42,42,42,42)
  685. &SAYNORMAL
  686. @ 24,01 SAY HELPLINE
  687. &SAYREVERSE
  688. WAIT
  689. DO LKEY
  690. DO CASE
  691.     CASE Y.LKEY = 'N'
  692.         DO TUTORAD1
  693.     CASE Y.LKEY = 'P'
  694.         EXIT
  695. ENDCASE
  696. ENDDO
  697. RETURN
  698. ************
  699. PROCEDURE TUTORAD1
  700. ************
  701. * TUTORAD1.PRG
  702. * CREATE
  703. DO WHILE T
  704. @ 13,00 ERASE
  705. @ 14,00 SAY CENTER('Adding Records',80)
  706. TEXT
  707.  
  708.         Here you will enter the information in each field.  ^S will  save 
  709.         the record on the disk and return you to the CMD: line.  ^Q  will 
  710.         abandon  the data on the screen and return you to the CMD:  line.  
  711.         ^N  will save the data and ready the screen for the next  record.  
  712.         ^P will allow you to edit the previous record.  (Note: A ^N  will 
  713.         take  you to the end of the file.)  ^C will copy (carryover)  all 
  714.         the data in the record to a new record at the end of the file.
  715. ENDTEXT
  716. &SAYREVERSE
  717. ASSIGN BOX(13,05,23,74,42,42,42,42,42,42)
  718. X.STRING = 'APPEND'
  719. X.STRROW = 0
  720. X.STRCOL = 4
  721. X.STRTIME = 5
  722. &SAYREVERSE
  723. DO PRINTTXT
  724. @ 03,52 SAY 'MAIL.DBF'
  725. @ 03,73 SAY '1'
  726. @ 06,00 SAY 'FIRST_NAME'
  727. @ ROW()+1,00 SAY 'LAST_NAME'
  728. @ ROW()+1,00 SAY 'ADDRESS'
  729. @ ROW()+1,00 SAY 'CITY'
  730. @ ROW()+1,00 SAY 'STATE'
  731. @ ROW()+1,00 SAY 'ZIP'
  732. @ ROW()+1,00 SAY 'PHONE'
  733. &SAYNORMAL
  734. @ 04,00 SAY '^S=save ^Q=quit ^N=next ^P=prv ^C=carryover'
  735. @ 06,11 SAY SPACE(10)
  736. @ ROW()+1,11 SAY SPACE(20)
  737. @ ROW()+1,11 SAY SPACE(60)
  738. @ ROW()+1,11 SAY SPACE(15)
  739. @ ROW()+1,11 SAY '  '
  740. @ ROW()+1,11 SAY '     '
  741. @ ROW()+1,11 SAY SPACE(12)
  742. ***********
  743. *FIRSTNAME
  744. *********
  745. X.STRING = 'Mike'
  746. X.STRROW = 6
  747. X.STRCOL = 11
  748. X.STRTIME=5
  749. DO PRINTTXT
  750. ***********
  751. *LAST NAME
  752. *********
  753. X.STRING = 'Dausend'
  754. X.STRROW = ROW()+1
  755. X.STRCOL = 11
  756. X.STRTIME=5
  757. DO PRINTTXT
  758. ***********
  759. * ADDRESS
  760. *********
  761. X.STRING = '723 Seawood Way'
  762. X.STRROW = ROW()+1
  763. X.STRCOL = 11
  764. X.STRTIME=5
  765. DO PRINTTXT
  766. ***********
  767. *city
  768. *********
  769. X.STRING = 'San Jose'
  770. X.STRROW = ROW()+1
  771. X.STRCOL = 11
  772. X.STRTIME=5
  773. DO PRINTTXT
  774. ***********
  775. *state
  776. *********
  777. X.STRING = 'CA'
  778. X.STRROW = ROW()+1
  779. X.STRCOL = 11
  780. X.STRTIME=5
  781. DO PRINTTXT
  782. ***********
  783. *zip
  784. *********
  785. X.STRING = '95120'
  786. X.STRROW = ROW()+1
  787. X.STRCOL = 11
  788. X.STRTIME=5
  789. DO PRINTTXT
  790. ***********
  791. *PHONE
  792. *********
  793. X.STRING = '408-268-6033'
  794. X.STRROW = ROW()+1
  795. X.STRCOL = 11
  796. X.STRTIME=5
  797. DO PRINTTXT
  798. &SAYREVERSE
  799. @ 00,04 ESAY ''
  800. @ 03,04 SAY 'DONE'
  801. &SAYNORMAL
  802. @ 24,01 SAY HELPLINE
  803. &SAYREVERSE
  804. WAIT
  805. DO LKEY
  806. DO CASE
  807.     CASE Y.LKEY = 'N'
  808.         DO TUTORAD2
  809.     CASE Y.LKEY = 'P'
  810.         EXIT
  811. ENDCASE
  812. ENDDO
  813. RETURN
  814. ************
  815. PROCEDURE TUTORAD2
  816. ************
  817. DO WHILE T
  818. ERASE
  819. DO NORMSCR
  820. &SAYREVERSE
  821. @ 03,52 SAY 'MAIL.DBF'
  822. @ 03,73 SAY '1'
  823. @ 14,00 SAY CENTER('Adding Records',80)
  824. TEXT
  825.  
  826.         If you would like to add some of your own records to the database, 
  827.         please  type a ^A. (Hold the control key down while pressing  the 
  828.         "A" key.) 
  829. ENDTEXT
  830. ASSIGN BOX(13,05,23,74,42,42,42,42,42,42)
  831. &SAYNORMAL
  832. @ 24,01 SAY HELPLINE
  833. &SAYREVERSE
  834. WAIT
  835. IF LASTKEY() = 1
  836.     ERASE
  837.     SET TALK ON
  838.     APPEND
  839.     SET TALK OFF
  840.     Y.LKEY = ' '
  841. ELSE
  842.     DO LKEY
  843. ENDIF
  844. DO CASE
  845.     CASE Y.LKEY = 'N'
  846.         DO TUTORDS0
  847.     CASE Y.LKEY = 'P'
  848.         EXIT
  849. ENDCASE
  850. ENDDO
  851. RETURN
  852. ************
  853. PROCEDURE TUTORDS0
  854. ************
  855. * TUTORDS0.PRG
  856. * CREATE
  857. DO WHILE T
  858. ERASE
  859. DO NORMSCR
  860. &SAYREVERSE
  861. @ 03,52 SAY 'MAIL.DBF'
  862. @ 03,73 SAY '1'
  863. @ 11,00 SAY CENTER('Displaying Records',80)
  864. TEXT
  865.         There are several commands you can use to look at your data.  One 
  866.         is  the  LIST command.  If you type LIST, dBMAN  will  print  the 
  867.         current  record  on the screen .  LIST ALL will print the  entire 
  868.         data base on your screen in a continuous scrolling fashion.
  869.  
  870.         Another  command  is  DISPLAY ALL.  DISPLAY ALL  will  print  one 
  871.         screen  of records at a time.  You can use the  ^right-arrow  and 
  872.         the  ^left-arrow to move right or left (pan) through the  fields.  
  873.         If  you  would like to see the DISPLAY ALL command  work  on  the 
  874.         MAIL  data  base,  please  type  ^D. (Hold the control  key  down 
  875.         and press the "D" key.)
  876. ENDTEXT
  877. ASSIGN BOX(10,05,23,74,42,42,42,42,42,42)
  878. &SAYNORMAL
  879. @ 24,01 SAY HELPLINE
  880. &SAYREVERSE
  881. WAIT
  882. IF LASTKEY() = 4
  883.     ERASE
  884.     SET TALK ON
  885.     DISPLAY ALL
  886.     SET TALK OFF
  887.     Y.LKEY = ' '
  888. ELSE
  889.     DO LKEY
  890. ENDIF
  891. DO CASE
  892.     CASE Y.LKEY = 'N'
  893.         DO TUTORED0
  894.     CASE Y.LKEY = 'P'
  895.         EXIT
  896. ENDCASE
  897. ENDDO
  898. DO WHILE T
  899. ERASE
  900. DO NORMSCR
  901. &SAYREVERSE
  902. @ 03,52 SAY 'MAIL.DBF'
  903. @ 03,73 SAY '1'
  904. @ 11,00 SAY CENTER('Displaying Records',80)
  905. TEXT
  906.         There are several commands you can use to look at your data.  One 
  907.         is  the  LIST command.  If you type LIST, dBMAN  will  print  the 
  908.         current  record  on the screen .  LIST ALL will print the  entire 
  909.         data base on your screen in a continuous scrolling fashion.
  910.  
  911.         Another  command  is  DISPLAY ALL.  DISPLAY ALL  will  print  one 
  912.         screen  of records at a time.  You can use the  ^right-arrow  and 
  913.         the  ^left-arrow to move right or left (pan) through the  fields.  
  914.         If  you  would like to see the DISPLAY ALL command  work  on  the 
  915.         MAIL  data  base,  please  type  ^D. (Hold the control  key  down 
  916.         and press the "D" key.)
  917. ENDTEXT
  918. ASSIGN BOX(10,05,23,74,42,42,42,42,42,42)
  919. &SAYNORMAL
  920. @ 24,01 SAY HELPLINE
  921. &SAYREVERSE
  922. WAIT
  923. IF LASTKEY() = 4
  924.     ERASE
  925.     SET TALK ON
  926.     DISPLAY ALL
  927.     SET TALK OFF
  928.     Y.LKEY = ' '
  929. ELSE
  930.     DO LKEY
  931. ENDIF
  932. DO CASE
  933.     CASE Y.LKEY = 'N'
  934.         DO TUTORED0
  935.     CASE Y.LKEY = 'P'
  936.         EXIT
  937. ENDCASE
  938. ENDDO
  939. RETURN
  940. ************
  941. PROCEDURE TUTORLO0
  942. ************
  943. * TUTORLO0.PRG
  944. * CREATE
  945. DO WHILE T
  946. @ 05,00 ERASE
  947. GO TOP
  948. DO NORMSCR
  949. &SAYREVERSE
  950. @ 03,52 SAY 'MAIL.DBF'
  951. @ 03,73 SAY '1'
  952. @ 11,00 SAY CENTER('Locating Records',80)
  953. TEXT
  954.  
  955.         Let's say you want to do something with a record, such as  change 
  956.         it.  (More on the EDIT command later.)  In order to use a record, 
  957.         you will need to make it the current record.  One way to do this, 
  958.         if you know the record number, is to use the command GOTO.   Just 
  959.         type  GOTO  <recordnumber>, and fill in the record  number.   For 
  960.         example GOTO 12.
  961. ENDTEXT
  962. ASSIGN BOX(10,05,23,74,42,42,42,42,42,42)
  963. &SAYNORMAL
  964. @ 24,01 SAY HELPLINE
  965. &SAYREVERSE
  966. WAIT
  967. DO LKEY
  968. DO CASE
  969.     CASE Y.LKEY = 'N'
  970.         & SAYREVERSE
  971.         X.STRING = 'GOTO 1   '
  972.         X.STRROW = 0
  973.         X.STRCOL = 4
  974.         X.STRTIME = 5
  975.         DO PRINTTXT
  976.         @ 00,04 ESAY ''
  977.         @ 03,04 SAY 'DONE'
  978.         @ 03,04 SAY '    '
  979.         X.STRING = 'LIST   '
  980.         X.STRROW = 0
  981.         X.STRCOL = 4
  982.         X.STRTIME = 5
  983.         DO PRINTTXT
  984.         @ 06,00 SAY ''
  985.         LIST
  986.         @ 00,04 ESAY ''
  987.         @ 03,04 SAY 'DONE'
  988.             Y.LC = 0
  989.             DO WHILE Y.LC < 20
  990.                 INC Y.LC
  991.             ENDDO
  992.         DO TUTORLO1
  993.     CASE Y.LKEY = 'P'
  994.         EXIT
  995. ENDCASE
  996. ENDDO
  997. RETURN
  998. ************
  999. PROCEDURE TUTORLO1
  1000. ************
  1001. * TUTORLO1.PRG
  1002. * CREATE
  1003. DO WHILE T
  1004. @ 05,00 ERASE
  1005. @ 03,04 SAY '    '
  1006. GO TOP
  1007. DO NORMSCR
  1008. &SAYREVERSE
  1009. @ 03,52 SAY 'MAIL.DBF'
  1010. @ 03,73 SAY '1'
  1011. @ 11,00 SAY CENTER('Locating Records',80)
  1012. TEXT
  1013.  
  1014.         Another  way to go to a record is to LOCATE it.  Here are  a  few 
  1015.         examples: LOCATE FOR STATE = "CA" ;  LOCATE FOR LAST_NAME >  "D";  
  1016.         LOCATE  FOR STATE = "CA" AND LAST_NAME > "D".  dBMAN will try  to 
  1017.         find the first record that matches.  If there is no match,  dBMAN 
  1018.         will display the message: Err05 - End Of File...No More  Records.  
  1019.         Don't  worry  about  getting an error; there  are  just  no  more 
  1020.         records.
  1021. ENDTEXT
  1022. ASSIGN BOX(10,05,23,74,42,42,42,42,42,42)
  1023. &SAYNORMAL
  1024. @ 24,01 SAY HELPLINE
  1025. &SAYREVERSE
  1026. WAIT
  1027. DO LKEY
  1028. DO CASE
  1029.     CASE Y.LKEY = 'N'
  1030.         & SAYREVERSE
  1031.         X.STRING = 'LOCATE FOR STATE = "CA"'
  1032.         X.STRROW = 0
  1033.         X.STRCOL = 4
  1034.         X.STRTIME = 5
  1035.         DO PRINTTXT
  1036.         LOCATE FOR STATE = 'CA'
  1037.         IF EOF()
  1038.             BEEP
  1039.             @ 03,04 SAY 'Err05 - End Of File...No More  Records'
  1040.             Y.LC = 0
  1041.             DO WHILE Y.LC < 20
  1042.                 INC Y.LC
  1043.             ENDDO
  1044.         ELSE
  1045.             @ 00,04 ESAY ''
  1046.             @ 03,04 SAY 'DONE'
  1047.             X.STRING = 'LIST   '
  1048.             X.STRROW = 0
  1049.             X.STRCOL = 4
  1050.             X.STRTIME = 5
  1051.             DO PRINTTXT
  1052.             @ 06,00 SAY ''
  1053.             LIST
  1054.             @ 00,04 ESAY ''
  1055.             @ 03,04 SAY 'DONE'
  1056.             Y.LC = 0
  1057.             DO WHILE Y.LC < 20
  1058.                 INC Y.LC
  1059.             ENDDO
  1060.         ENDIF
  1061.         DO TUTORED0
  1062.     CASE Y.LKEY = 'P'
  1063.         EXIT
  1064. ENDCASE
  1065. ENDDO
  1066. RETURN
  1067. ************
  1068. PROCEDURE TUTORED0
  1069. ************
  1070. * TUTORED0.PRG
  1071. * CREATE
  1072. DO WHILE T
  1073. ERASE
  1074. DO NORMSCR
  1075. &SAYREVERSE
  1076. GO TOP
  1077. @ 03,52 SAY 'MAIL.DBF'
  1078. @ 03,73 SAY '1'
  1079. @ 12,00 SAY CENTER('Editing Records',80)
  1080. TEXT
  1081.  
  1082.         Here you will enter the information in each field.  ^S will  save 
  1083.         the record on the disk and return you to the CMD: line.  ^Q  will 
  1084.         abandon  the data on the screen and return you to the CMD:  line.  
  1085.         ^N  will save the data and go to the next record.  ^P  will  save 
  1086.         the data and allow you to edit the previous record.  ^D will mark 
  1087.         the record for deletion.  ^U will remove the deletion mark.
  1088.         To permanent remove a deleted record use the PACK command.
  1089.  
  1090.         If you would like to EDIT press ^E.
  1091. ENDTEXT
  1092. ASSIGN BOX(11,05,23,74,42,42,42,42,42,42)
  1093. &SAYNORMAL
  1094. @ 24,01 SAY HELPLINE
  1095. &SAYREVERSE
  1096. WAIT
  1097. IF LASTKEY() = 5
  1098.     ERASE
  1099.     SET TALK ON
  1100.     EDIT
  1101.     SET TALK OFF
  1102.     Y.LKEY = ' '
  1103. ELSE
  1104.     DO LKEY
  1105. ENDIF
  1106. DO CASE
  1107.     CASE Y.LKEY = 'N'
  1108.         DO TUTORSO0
  1109.     CASE Y.LKEY = 'P'
  1110.         EXIT
  1111. ENDCASE
  1112. ENDDO
  1113. RETURN
  1114. ************
  1115. PROCEDURE TUTORSO0
  1116. ************
  1117. * TUTORSO0.PRG
  1118. * CREATE
  1119. DO WHILE T
  1120. ERASE
  1121. GO TOP
  1122. DO NORMSCR
  1123. &SAYREVERSE
  1124. @ 03,52 SAY 'MAILL.DBF'
  1125. @ 03,73 SAY '1'
  1126. @ 12,00 SAY CENTER('Sorting Records',80)
  1127. TEXT
  1128.  
  1129.         If  you want to look at your data base in a certain order,  dBMAN 
  1130.         provides two ways to organize your file: SORTing and INDEXing.
  1131.  
  1132.         SORTing  your  file  creates  a  new  data  file  and  physically 
  1133.         rearranges  the records into the specified order.  To  sort  your 
  1134.         file,  simply  type  SORT ON  <fieldname>  TO  <filename>.   Some 
  1135.         examples:   SORT  ON STATE TO STFILE;  SORT ON  NAME  TO  NAFILE.  
  1136.         Then to see the new sorted data, you will type USE <filename>.
  1137.         To see a sort press ^S.
  1138. ENDTEXT
  1139. ASSIGN BOX(11,05,23,74,42,42,42,42,42,42)
  1140. &SAYNORMAL
  1141. @ 24,01 SAY HELPLINE
  1142. &SAYREVERSE
  1143. WAIT
  1144. IF LASTKEY() = 19
  1145.         &SAYREVERSE
  1146.         ERASE
  1147.         SET TALK ON
  1148.         SORT ON LAST_NAME TO TEMP
  1149.         USE TEMP
  1150.         LIST ALL FIRST_NAME,LAST_NAME
  1151.         TEXT
  1152. ******************************************************************************
  1153. *       Notice  how in the record number in the left hand column is in       *
  1154. *       order?   The sort will physically reorder the data.                  *
  1155. ******************************************************************************
  1156.  
  1157.  
  1158.         ENDTEXT
  1159.         ? '  '
  1160.         &SAYNORMAL
  1161.         ?? CENTER('PRESS ANY KEY TO CONTINUE',76)
  1162.         &SAYREVERSE
  1163.         WAIT
  1164.         SET TALK OFF
  1165.         USE MAIL
  1166.         LOOP
  1167. ENDIF
  1168. DO LKEY
  1169. DO CASE
  1170.     CASE Y.LKEY = 'N'
  1171.         ERASE
  1172.         SET TALK ON
  1173.         SORT ON LAST_NAME TO TEMP
  1174.         USE TEMP
  1175.         LIST ALL FIRST_NAME,LAST_NAME
  1176.         SET TALK OFF
  1177.         USE MAIL
  1178.         Y.LC=0
  1179.         DO WHILE Y.LC < 60
  1180.             INC Y.LC
  1181.         ENDDO
  1182.         DO TUTORID0
  1183.     CASE Y.LKEY = 'P'
  1184.         EXIT
  1185. ENDCASE
  1186. ENDDO
  1187. RETURN
  1188. ************
  1189. PROCEDURE TUTORID0
  1190. ************
  1191. * TUTORid0.PRG
  1192. * CREATE
  1193. DO WHILE T
  1194. ERASE
  1195. GO TOP
  1196. DO NORMSCR
  1197. &SAYREVERSE
  1198. @ 03,52 SAY 'MAIL.DBF'
  1199. @ 03,73 SAY '1'
  1200. @ 11,00 SAY CENTER('Indexing Records',80)
  1201. TEXT
  1202.  
  1203.         If  you want to look at your data base in a certain order,  dBMAN 
  1204.         provides two ways to organize your file: INDEXing and SORTing.
  1205.  
  1206.         INDEXing  your file creates a new file that will make  your  data 
  1207.         file  appear  in  the  desired order.   It  does  not  physically 
  1208.         rearrange  the  records in the data base.  To  INDEX  your  file, 
  1209.         simply  type  INDEX  ON  <fieldname>  TO  <indexfilename>.   Some 
  1210.         examples:   INDEX ON STATE TO STFILE;  INDEX ON NAME  TO  NAFILE.  
  1211.         Then to see the new sorted data, you will type USE <mainfilename> 
  1212.         INDEX  <indexfilename>.  To see an index type ^I.
  1213. ENDTEXT
  1214. ASSIGN BOX(10,05,23,74,42,42,42,42,42,42)
  1215. &SAYNORMAL
  1216. @ 24,01 SAY HELPLINE
  1217. &SAYREVERSE
  1218. WAIT
  1219. IF LASTKEY() = 9
  1220.         &SAYREVERSE
  1221.         ERASE
  1222.         SET TALK ON
  1223.         INDEX ON LAST_NAME TO TEMP
  1224.         LIST ALL FIRST_NAME,LAST_NAME
  1225.         TEXT
  1226. ******************************************************************************
  1227. *       Notice  how in the record number in the left hand column is in  a    *
  1228. *       random  order?   The index will make the data  appear  in  order,    *
  1229. *       while not having to physically reorder the data.                     *
  1230. ******************************************************************************
  1231.  
  1232.  
  1233.         ENDTEXT
  1234.         ? '  '
  1235.         &SAYNORMAL
  1236.         ?? CENTER('PRESS ANY KEY TO CONTINUE',76)
  1237.         &SAYREVERSE
  1238.         WAIT
  1239.         SET TALK OFF
  1240.         USE MAIL
  1241.         LOOP
  1242. ENDIF
  1243. DO LKEY
  1244. DO CASE
  1245.     CASE Y.LKEY = 'N'
  1246.         ERASE
  1247.         &SAYREVERSE
  1248.         TEXT
  1249.  
  1250.         Thank you for joining us through this simple tutorial.  There  is 
  1251.         so much more to dBMAN that we could ever include in a disk  based 
  1252.         tutorial.   In  this  short tutorial we have tried  to  give  you 
  1253.         enough information to get you started using and enjoying dBMAN.
  1254.         ENDTEXT
  1255.         &SAYNORMAL
  1256.         @ 24,02 SAY CENTER('PRESS ANY KEY TO CONTINUE',76)
  1257.         &SAYREVERSE
  1258.         WAIT
  1259.         RETURN TO MAIN
  1260.     CASE Y.LKEY = 'P'
  1261.         EXIT
  1262. ENDCASE
  1263. ENDDO
  1264. RETURN
  1265. ************
  1266. PROCEDURE NORMSCR
  1267. ************
  1268. * NORMSCR.PRG
  1269. * PAINT NORMAL DBMAN SCREEN
  1270. *
  1271. @ 00,00 SAY 'CMD:'
  1272. @ 03,00 SAY 'MSG:'
  1273. @ 03,49 SAY 'FP'
  1274. @ 03,69 SAY 'Rec'
  1275. &SAYNORMAL
  1276. @ 04,00 SAY RTJUST('F7=Mem F8=Sta F9=Err F10=Cmd',80)
  1277. &SAYREVERSE
  1278. RETURN
  1279. **************
  1280. PROCEDURE LKEY
  1281. *************
  1282. * LKEY.PRG
  1283. DO CASE
  1284.      CASE LASTKEY() = 200 OR LASTKEY() = 21 OR LASTKEY() = 195
  1285.          * PRIVOUS  UP ARROW, ^P, F9
  1286.          Z.LKEY = 'P'
  1287.      CASE LASTKEY() = 199 OR LASTKEY() = 13 OR LASTKEY() = 187
  1288.         * MENU HOME, ^M, F1
  1289.         Z.LKEY = 'M'
  1290.         RETURN TO MAIN
  1291.     CASE LASTKEY() = 27 OR LASTKEY() = 17 OR LASTKEY() = 207
  1292.         * QUIT ESC, ^Q, END
  1293.         *CLOSE ALL
  1294.         RETURN TO MAIN
  1295.     OTHERWISE
  1296.         Z.LKEY = 'N'
  1297. ENDCASE
  1298. RETURN
  1299. *****************
  1300. PROCEDURE PRINTTXT
  1301. ****************
  1302. * PRINTTXT.PRG
  1303. * PRINTS A STRING ON THE SCREEN ONE CHR AT A TIME
  1304. *
  1305. * X.STRING = STRING TO BE PRINTED
  1306. * X.STRROW = ROW
  1307. * X.STRCOL = COL
  1308. * X.STRTIME = TIME BETWEEN CHR'S
  1309. X.STRTIME = -1
  1310. STORE 1 TO Y.CURRCHR,Y.WTTIME | CURRENT CHR TO PRINT, WAIT COUNTER
  1311. Y.STRCOL = X.STRCOL
  1312. DO WHILE Y.CURRCHR <= LEN(X.STRING)
  1313.     @ X.STRROW,Y.STRCOL SAY $(X.STRING,Y.CURRCHR,1)
  1314.     INC Y.CURRCHR,Y.STRCOL
  1315. ENDDO
  1316. RETURN
  1317. ********
  1318. *    DO WHILE Y.WTTIME <= X.STRTIME
  1319. *        INC Y.WTTIME
  1320. *    ENDDO
  1321. *    Y.WTTIME = 0
  1322. ********
  1323.